package ace.module.product.core.impl.manager;

import ace.cmp.data.spring.data.jdbc.querydsl.rsql.core.model.SaveContext;
import ace.module.common.core.impl.manager.EntityOfAppManager;
import ace.module.product.api.model.dto.PmsProductAttributeDto;
import ace.module.product.api.model.input.PmsProductAttributeSaveInput;
import ace.module.product.core.impl.dao.entity.PmsProduct;
import ace.module.product.core.impl.dao.entity.PmsProductAttribute;
import ace.module.product.core.impl.dao.model.bo.PmsProductAttributeBo;
import java.util.List;
import java.util.Optional;

/**
 * 商品规格属性 spring data jdbc querydsl rsql manager.
 *
 * @author Caspar
 */
public interface PmsProductAttributeManager extends EntityOfAppManager<PmsProductAttribute, Long, PmsProductAttributeDto> {

  Optional<PmsProductAttribute> findByName(List<PmsProductAttribute> productAttributes, String name);

  PmsProductAttributeBo assembleProductAttributeBos(List<PmsProductAttributeSaveInput> pmsProductAttributeSaveInputs, PmsProduct product);

  SaveContext<PmsProductAttribute> assemblePmsProductAttributeSaveContext(SaveContext<PmsProduct> pmsProductSaveContext, PmsProductAttributeSaveInput pmsProductAttributeSaveInput);
}